﻿using NGridDrawer.Partitions;

namespace NGridDrawer.Draw
{
    /// <summary>
    /// Defines a set of features which have been implement in library drawers
    /// </summary>
    public interface IPropertiesDrawer
    {
        /// <summary>
        /// Defines if partitions must be horizontally centered in their bounds when painted
        /// </summary>
        bool MustCenterHorizontally { get; set; }

        /// <summary>
        /// Defines if partitions must be vertically centered in their bounds when painted
        /// </summary>
        bool MustCenterVertically { get; set; }

        /// <summary>
        /// Defines in which order partitions must be painted
        /// </summary>
        PartitionOrder PrintOrder { get; set; }

        /// <summary>
        /// Defines if only selected columns must be printed
        /// </summary>
        bool MustPrintSelectedColumns { get; set; }

        /// <summary>
        /// Defines if only selected rows must be printed
        /// </summary>
        bool MustPrintSelectedRows { get; set; }

        /// <summary>
        /// Defines if row headers must be printed
        /// </summary>
        bool MustPrintRowHeaders { get; set; }

        /// <summary>
        /// Defines if column headers must be printed
        /// </summary>
        bool MustPrintColumnHeaders { get; set; }

        /// <summary>
        /// Defines if proposed sizes must be scaled in order to fit whole of columns on a single partition
        /// </summary>
        bool MustFitColumnsToBounds { get; set; }
    }
}